package com.wfg.flink.connector.utils;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;

/**
 * @author wfg
 */
public class RandomGeneratorUtils {
    /**
     * 生成随机的IP地址
     * @return ip
     */
    public static String generateRandomIp() {
        Random random = new Random();

        // 生成IP地址的四个部分 0-255
        int part1 = random.nextInt(256);
        int part2 = random.nextInt(256);
        int part3 = random.nextInt(256);
        int part4 = random.nextInt(256);

        // 将每个部分转换为字符串，并用点连接
        return part1 + "." + part2 + "." + part3 + "." + part4;
    }
    /**
     * 在指定的开始和结束日期之间生成一个随机的日期时间。
     *
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 随机生成的日期时间
     */
    public static LocalDateTime generateRandomDateTime(LocalDate startDate, LocalDate endDate) {

        long startEpochDay = startDate.toEpochDay();
        long endEpochDay = endDate.toEpochDay();
        Random random = new Random();
        LocalDate randomDate = startDate;
        if (startEpochDay != endEpochDay) {
            long randomDay = startEpochDay + random.nextLong(endEpochDay - startEpochDay);
            randomDate = LocalDate.ofEpochDay(randomDay);
        }

        LocalTime randomTime = LocalTime.of(
                // 小时
                random.nextInt(24),
                // 分钟
                random.nextInt(60),
                // 秒
                random.nextInt(60)
        );

        return LocalDateTime.of(randomDate, randomTime);
    }


    private static final List<String> FIRST_NAMES = new ArrayList<>();
    private static final List<String> LAST_NAMES = new ArrayList<>();

    static {
        // 初始化一些常见的名字和姓氏
        FIRST_NAMES.addAll(Arrays.asList("王","李","赵","刘","张", "钱", "孙", "周", "吴", "郑", "王", "冯", "陈", "褚", "卫", "蒋", "沈", "韩", "杨", "朱", "秦", "尤", "许", "何", "吕", "施",
                "张", "孔", "曹", "严", "华", "金", "魏", "陶", "姜", "戚", "谢", "邹", "喻", "柏", "水", "窦", "章", "云", "苏", "潘", "葛", "奚", "范", "彭", "郎",
                "鲁","韦", "昌", "马", "苗", "凤", " 刚", "文", "张", "桂", "富", "生", "龙", "功", "夫", "周", "建", "余", "冲", "程", "沙", "阳", "江", "潘"));

        LAST_NAMES.addAll(Arrays.asList("伟","芳","丽","强","明","风","阳","海","天","藏","霞","刚", "夫", "勇", "毅", "俊", "峰", "强", "军", "平", "保", "东", "文", "辉", "力", "明", "永", "健", "世", "广", "志", "义",
                "义", "兴", "良", "海", "山", "仁", "波", "宁", "贵", "福", "生", "龙", "元", "全", "国", "胜", "学", "祥", "才", "艺", "能", "武", "航", "城", "春",
                "明", "文", "辉", "建", "永", "强", "军", "平", "保", "东", "文", "辉", "力", "明", "永", "健", "世", "广", "志", "义", "义", "兴", "良", "海", "山",
                "仁", "波", "宁", "贵", "福", "生", "龙", "元", "全", "国", "胜", "学", "祥", "才", "艺", "能", "武", "航", "城", "春", "明", "文", "辉", "建",
                "永", "强", "军", "平", "保", "东", "文", "辉", "力", "明", "永", "健", "世", "广", "志", "义", "义", "兴", "良", "海", "山", "仁", "波", "宁",
                "贵", "福", "生", "龙", "元", "全", "国", "胜", "学", "祥", "才", "艺", "能", "武", "航", "城", "春", "明", "文", "辉", "建", "永", "强", "军",
                "平", "保", "东", "文", "辉", "力", "明", "永", "健", "世", "广", "志", "义", "义", "兴", "良", "海", "山", "仁", "波", "宁", "贵", "福", "生",
                "龙", "元", "全", "国", "胜", "学", "祥", "才", "艺", "能", "武", "航", "城", "春", "明", "文", "辉", "建", "永", "强", "军", "平", "保", "东"));
    }
    /**
     * 生成一个随机的全名，由随机的姓和名组成。
     *
     * @return 随机全名
     */
    public static String generateRandomFullName() {
        Random random = new Random();
        String firstName = FIRST_NAMES.get(random.nextInt(FIRST_NAMES.size()));
        String lastName = LAST_NAMES.get(random.nextInt(LAST_NAMES.size()));
        return firstName + lastName;
    }
}
